/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.mb;

import br.com.sgs.auxiliar.DepartamentoAux;
import br.com.sgs.bundle.MessageBundleLoader;
import br.com.sgs.entity.Departamento;
import br.com.sgs.fachada.*;
import br.com.sgs.util.DataValue;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author Eric
 */
@ManagedBean(name="departamentoMB")
@ViewScoped
public class DepartamentoMB implements Serializable {
    
    private List<Departamento> lsdepartamento = new ArrayList<Departamento>();
    private List<String> lsstatus = new ArrayList<String>();
       
    //departamento selecionado
    private Departamento departamentoselecionado;
    
    //parametro de busca
    private String busca;
 
    //campos do visualizar
    private String strdescricao;
    private String strramal;
    private Date strdtcriacao;
    private String strstatus;
    
    /**
     * Creates a new instance of DepartamentoMB
     */
    public DepartamentoMB() {
    }
    
    @PostConstruct
    public void init() {
        try {
            
            DepartamentoIFachada ifach = new DepartamentoFachada();

            for (DataValue lsd : DepartamentoAux.getStatusLista()) {
                this.getLsstatus().add(lsd.getValue());
            }

            lsdepartamento = ifach.findDepartamentoByAll("", "", null, null, lsstatus);


        } catch (Exception e) {
            System.err.println("Erro no init do departamentoMB");
        }
    }
        
    public void buscar() {
        try {
            
            DepartamentoIFachada ifach = new DepartamentoFachada();
            System.out.println(busca);
            lsdepartamento = ifach.findDepartamentoByAll(getBusca(), "", null, null, getLsstatus());

            
        } catch (Exception e) {
            System.err.println("Erron no método buscar");
            e.printStackTrace();
        }
    }
    
    public void visualizar(Departamento d){
        try {

            strdescricao = d.getDescricao();
            strramal = d.getRamal();
            strstatus =  MessageBundleLoader.getMessage(DepartamentoAux.getStatusLabel(d.getStatus()));
            strdtcriacao  = d.getDtcriacao();

        } catch (Exception e) {
            System.err.println("Erro no visualizar");
        }
    }
        
    public void excluir() {
        try {

            DepartamentoIFachada ifach = new DepartamentoFachada();

            Departamento departamento = getDepartamentoselecionado();

            departamento.setStatus(DepartamentoAux.EXCLUIDO);
            ifach.alterar(departamento);

            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, MessageBundleLoader.getMessage("msgExcluidoSucesso"), ""));
            atualizarTabela();

        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, MessageBundleLoader.getMessage("msgexclusaoErro"), ""));
        }

    }

    public String editar() {
        try {
           return "DEPARTAMENTOEDIT";
        } catch (Exception e) {
           return null;
        }
    }
    
    public void atualizarTabela() {
        try {

            DepartamentoIFachada ifach = new DepartamentoFachada();
            lsdepartamento = ifach.findDepartamentoByAll("", "", null, null, getLsstatus());

        } catch (Exception e) {
            System.err.println("Erro no metodo atualizarTabela");
        }
    }
    
    public void selecionarRegistro(Departamento departamento) {
        try {

            departamentoselecionado = departamento;

        } catch (Exception e) {
            System.err.println("Erro no metodo selecionarRegistro");
        }

    }
    
    public String strStatusLabel(int st) {
        return MessageBundleLoader.getMessage(DepartamentoAux.getStatusLabel(st));
    }

    /**
     * @return the lsdepartamento
     */
    public List<Departamento> getLsdepartamento() {
        return lsdepartamento;
    }

    /**
     * @param lsdepartamento the lsdepartamento to set
     */
    public void setLsdepartamento(List<Departamento> lsdepartamento) {
        this.lsdepartamento = lsdepartamento;
    }

    /**
     * @return the lsstatus
     */
    public List<String> getLsstatus() {
        return lsstatus;
    }

    /**
     * @param lsstatus the lsstatus to set
     */
    public void setLsstatus(List<String> lsstatus) {
        this.lsstatus = lsstatus;
    }

    /**
     * @return the departamentoselecionado
     */
    public Departamento getDepartamentoselecionado() {
        return departamentoselecionado;
    }

    /**
     * @param departamentoselecionado the departamentoselecionado to set
     */
    public void setDepartamentoselecionado(Departamento departamentoselecionado) {
        this.departamentoselecionado = departamentoselecionado;
    }

    /**
     * @return the busca
     */
    public String getBusca() {
        return busca;
    }

    /**
     * @param busca the busca to set
     */
    public void setBusca(String busca) {
        this.busca = busca;
    }

    /**
     * @return the strdescricao
     */
    public String getStrdescricao() {
        return strdescricao;
    }

    /**
     * @param strdescricao the strdescricao to set
     */
    public void setStrdescricao(String strdescricao) {
        this.strdescricao = strdescricao;
    }

    /**
     * @return the strramal
     */
    public String getStrramal() {
        return strramal;
    }

    /**
     * @param strramal the strramal to set
     */
    public void setStrramal(String strramal) {
        this.strramal = strramal;
    }

    /**
     * @return the strdtcriacao
     */
    public Date getStrdtcriacao() {
        return strdtcriacao;
    }

    /**
     * @param strdtcriacao the strdtcriacao to set
     */
    public void setStrdtcriacao(Date strdtcriacao) {
        this.strdtcriacao = strdtcriacao;
    }

    /**
     * @return the strstatus
     */
    public String getStrstatus() {
        return strstatus;
    }

    /**
     * @param strstatus the strstatus to set
     */
    public void setStrstatus(String strstatus) {
        this.strstatus = strstatus;
    }
            
    
    
}
